package string;

/**
 * String replaceAll(String regex,String replacement)
 * 将当前字符串满足正则表达式(regex)的部分替换为给定内容(replacement)
 */
public class ReplaceAllDemo {
    public static void main(String[] args) {
        String str = "abc123def456ghi";
        str = str.replaceAll("[0-9]+", "#NUMBER#");//将数字部分替换为#NUMBER#
        System.out.println(str);//abc#NUMBER#def#NUMBER#ghi
        String str1 = "abc123def456ghi";
        //注意正则表达式的+号，+:表示前面的内容最少出现1次
        //?:表示前面的内容出现0-1次  *:表示前面的内容出现任意次(0-多次)
        str1 = str1.replaceAll("[0-9]", "#NUMBER#");//将数字部分替换为#NUMBER#
        System.out.println(str1);//abc#NUMBER##NUMBER##NUMBER#def#NUMBER##NUMBER##NUMBER#ghi

        //和谐用语
        String message = "你sb,gun吧!";
        //String regex = "(gun|sha|sb)";
        message=message.replaceAll("(gun|sha|sb)+","***");
        System.out.println(message);//你***,***吧!

        //(gun|sha|sb)与(gun|sha|sb)+区别
        /*
        * 假设输入的字符串是"你sbsb,gun吧!"：
         原始代码的替换结果是"你******,***吧!"若你期望对每个敏感词都进行单独计数和替换，就不+。
         修改后代码的替换结果是"你***,***吧!"。
         * 若你想将连续的敏感词视为一个整体进行处理，以减少替换后的字符长度，就+*/
    }
}
